/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.taobao.ibatiside.model.configv3.impl;

import org.eclipse.emf.common.notify.NotificationChain;

import org.eclipse.emf.common.util.EMap;

import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.InternalEObject;

import org.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;

import org.eclipse.emf.ecore.util.BasicFeatureMap;
import org.eclipse.emf.ecore.util.EcoreEMap;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.eclipse.emf.ecore.util.InternalEList;

import org.taobao.ibatiside.model.configv3.ConfigurationType;
import org.taobao.ibatiside.model.configv3.Configv3Package;
import org.taobao.ibatiside.model.configv3.DataSourceType;
import org.taobao.ibatiside.model.configv3.DatabaseIdProviderType;
import org.taobao.ibatiside.model.configv3.DocumentRoot;
import org.taobao.ibatiside.model.configv3.EnvironmentType;
import org.taobao.ibatiside.model.configv3.EnvironmentsType;
import org.taobao.ibatiside.model.configv3.MapperType;
import org.taobao.ibatiside.model.configv3.MappersType;
import org.taobao.ibatiside.model.configv3.ObjectFactoryType;
import org.taobao.ibatiside.model.configv3.ObjectWrapperFactoryType;
import org.taobao.ibatiside.model.configv3.PackageType;
import org.taobao.ibatiside.model.configv3.PluginType;
import org.taobao.ibatiside.model.configv3.PluginsType;
import org.taobao.ibatiside.model.configv3.PropertiesType;
import org.taobao.ibatiside.model.configv3.PropertyType;
import org.taobao.ibatiside.model.configv3.SettingType;
import org.taobao.ibatiside.model.configv3.SettingsType;
import org.taobao.ibatiside.model.configv3.TransactionManagerType;
import org.taobao.ibatiside.model.configv3.TypeAliasType;
import org.taobao.ibatiside.model.configv3.TypeAliasesType;
import org.taobao.ibatiside.model.configv3.TypeHandlerType;
import org.taobao.ibatiside.model.configv3.TypeHandlersType;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Document Root</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getMixed <em>Mixed</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getConfiguration <em>Configuration</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getDatabaseIdProvider <em>Database Id Provider</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getDataSource <em>Data Source</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getEnvironment <em>Environment</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getEnvironments <em>Environments</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getMapper <em>Mapper</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getMappers <em>Mappers</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getObjectFactory <em>Object Factory</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getObjectWrapperFactory <em>Object Wrapper Factory</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getPackage <em>Package</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getPlugin <em>Plugin</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getPlugins <em>Plugins</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getProperties <em>Properties</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getProperty <em>Property</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getSetting <em>Setting</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getSettings <em>Settings</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getTransactionManager <em>Transaction Manager</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getTypeAlias <em>Type Alias</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getTypeAliases <em>Type Aliases</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getTypeHandler <em>Type Handler</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv3.impl.DocumentRootImpl#getTypeHandlers <em>Type Handlers</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class DocumentRootImpl extends EObjectImpl implements DocumentRoot {
	/**
	 * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMixed()
	 * @generated
	 * @ordered
	 */
	protected FeatureMap mixed;

	/**
	 * The cached value of the '{@link #getXMLNSPrefixMap() <em>XMLNS Prefix Map</em>}' map.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXMLNSPrefixMap()
	 * @generated
	 * @ordered
	 */
	protected EMap<String, String> xMLNSPrefixMap;

	/**
	 * The cached value of the '{@link #getXSISchemaLocation() <em>XSI Schema Location</em>}' map.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getXSISchemaLocation()
	 * @generated
	 * @ordered
	 */
	protected EMap<String, String> xSISchemaLocation;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DocumentRootImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return Configv3Package.Literals.DOCUMENT_ROOT;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public FeatureMap getMixed() {
		if (mixed == null) {
			mixed = new BasicFeatureMap(this, Configv3Package.DOCUMENT_ROOT__MIXED);
		}
		return mixed;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EMap<String, String> getXMLNSPrefixMap() {
		if (xMLNSPrefixMap == null) {
			xMLNSPrefixMap = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, Configv3Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
		}
		return xMLNSPrefixMap;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EMap<String, String> getXSISchemaLocation() {
		if (xSISchemaLocation == null) {
			xSISchemaLocation = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, Configv3Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
		}
		return xSISchemaLocation;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ConfigurationType getConfiguration() {
		return (ConfigurationType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__CONFIGURATION, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetConfiguration(ConfigurationType newConfiguration, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__CONFIGURATION, newConfiguration, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setConfiguration(ConfigurationType newConfiguration) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__CONFIGURATION, newConfiguration);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DatabaseIdProviderType getDatabaseIdProvider() {
		return (DatabaseIdProviderType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__DATABASE_ID_PROVIDER, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetDatabaseIdProvider(DatabaseIdProviderType newDatabaseIdProvider, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__DATABASE_ID_PROVIDER, newDatabaseIdProvider, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDatabaseIdProvider(DatabaseIdProviderType newDatabaseIdProvider) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__DATABASE_ID_PROVIDER, newDatabaseIdProvider);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public DataSourceType getDataSource() {
		return (DataSourceType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__DATA_SOURCE, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetDataSource(DataSourceType newDataSource, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__DATA_SOURCE, newDataSource, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDataSource(DataSourceType newDataSource) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__DATA_SOURCE, newDataSource);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EnvironmentType getEnvironment() {
		return (EnvironmentType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__ENVIRONMENT, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetEnvironment(EnvironmentType newEnvironment, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__ENVIRONMENT, newEnvironment, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEnvironment(EnvironmentType newEnvironment) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__ENVIRONMENT, newEnvironment);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EnvironmentsType getEnvironments() {
		return (EnvironmentsType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__ENVIRONMENTS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetEnvironments(EnvironmentsType newEnvironments, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__ENVIRONMENTS, newEnvironments, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEnvironments(EnvironmentsType newEnvironments) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__ENVIRONMENTS, newEnvironments);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MapperType getMapper() {
		return (MapperType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__MAPPER, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetMapper(MapperType newMapper, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__MAPPER, newMapper, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMapper(MapperType newMapper) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__MAPPER, newMapper);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public MappersType getMappers() {
		return (MappersType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__MAPPERS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetMappers(MappersType newMappers, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__MAPPERS, newMappers, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMappers(MappersType newMappers) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__MAPPERS, newMappers);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ObjectFactoryType getObjectFactory() {
		return (ObjectFactoryType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__OBJECT_FACTORY, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetObjectFactory(ObjectFactoryType newObjectFactory, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__OBJECT_FACTORY, newObjectFactory, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setObjectFactory(ObjectFactoryType newObjectFactory) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__OBJECT_FACTORY, newObjectFactory);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ObjectWrapperFactoryType getObjectWrapperFactory() {
		return (ObjectWrapperFactoryType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetObjectWrapperFactory(ObjectWrapperFactoryType newObjectWrapperFactory, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY, newObjectWrapperFactory, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setObjectWrapperFactory(ObjectWrapperFactoryType newObjectWrapperFactory) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY, newObjectWrapperFactory);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PackageType getPackage() {
		return (PackageType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__PACKAGE, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetPackage(PackageType newPackage, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__PACKAGE, newPackage, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPackage(PackageType newPackage) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__PACKAGE, newPackage);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PluginType getPlugin() {
		return (PluginType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__PLUGIN, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetPlugin(PluginType newPlugin, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__PLUGIN, newPlugin, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPlugin(PluginType newPlugin) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__PLUGIN, newPlugin);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PluginsType getPlugins() {
		return (PluginsType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__PLUGINS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetPlugins(PluginsType newPlugins, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__PLUGINS, newPlugins, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setPlugins(PluginsType newPlugins) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__PLUGINS, newPlugins);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PropertiesType getProperties() {
		return (PropertiesType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__PROPERTIES, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetProperties(PropertiesType newProperties, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__PROPERTIES, newProperties, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setProperties(PropertiesType newProperties) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__PROPERTIES, newProperties);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public PropertyType getProperty() {
		return (PropertyType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__PROPERTY, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetProperty(PropertyType newProperty, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__PROPERTY, newProperty, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setProperty(PropertyType newProperty) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__PROPERTY, newProperty);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SettingType getSetting() {
		return (SettingType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__SETTING, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetSetting(SettingType newSetting, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__SETTING, newSetting, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSetting(SettingType newSetting) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__SETTING, newSetting);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public SettingsType getSettings() {
		return (SettingsType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__SETTINGS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetSettings(SettingsType newSettings, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__SETTINGS, newSettings, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setSettings(SettingsType newSettings) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__SETTINGS, newSettings);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TransactionManagerType getTransactionManager() {
		return (TransactionManagerType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__TRANSACTION_MANAGER, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetTransactionManager(TransactionManagerType newTransactionManager, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__TRANSACTION_MANAGER, newTransactionManager, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTransactionManager(TransactionManagerType newTransactionManager) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__TRANSACTION_MANAGER, newTransactionManager);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeAliasType getTypeAlias() {
		return (TypeAliasType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_ALIAS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetTypeAlias(TypeAliasType newTypeAlias, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_ALIAS, newTypeAlias, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeAlias(TypeAliasType newTypeAlias) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_ALIAS, newTypeAlias);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeAliasesType getTypeAliases() {
		return (TypeAliasesType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_ALIASES, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetTypeAliases(TypeAliasesType newTypeAliases, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_ALIASES, newTypeAliases, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeAliases(TypeAliasesType newTypeAliases) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_ALIASES, newTypeAliases);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeHandlerType getTypeHandler() {
		return (TypeHandlerType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_HANDLER, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetTypeHandler(TypeHandlerType newTypeHandler, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_HANDLER, newTypeHandler, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeHandler(TypeHandlerType newTypeHandler) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_HANDLER, newTypeHandler);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TypeHandlersType getTypeHandlers() {
		return (TypeHandlersType)getMixed().get(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_HANDLERS, true);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public NotificationChain basicSetTypeHandlers(TypeHandlersType newTypeHandlers, NotificationChain msgs) {
		return ((FeatureMap.Internal)getMixed()).basicAdd(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_HANDLERS, newTypeHandlers, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTypeHandlers(TypeHandlersType newTypeHandlers) {
		((FeatureMap.Internal)getMixed()).set(Configv3Package.Literals.DOCUMENT_ROOT__TYPE_HANDLERS, newTypeHandlers);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
		switch (featureID) {
			case Configv3Package.DOCUMENT_ROOT__MIXED:
				return ((InternalEList<?>)getMixed()).basicRemove(otherEnd, msgs);
			case Configv3Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
				return ((InternalEList<?>)getXMLNSPrefixMap()).basicRemove(otherEnd, msgs);
			case Configv3Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
				return ((InternalEList<?>)getXSISchemaLocation()).basicRemove(otherEnd, msgs);
			case Configv3Package.DOCUMENT_ROOT__CONFIGURATION:
				return basicSetConfiguration(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__DATABASE_ID_PROVIDER:
				return basicSetDatabaseIdProvider(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__DATA_SOURCE:
				return basicSetDataSource(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENT:
				return basicSetEnvironment(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENTS:
				return basicSetEnvironments(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__MAPPER:
				return basicSetMapper(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__MAPPERS:
				return basicSetMappers(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__OBJECT_FACTORY:
				return basicSetObjectFactory(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY:
				return basicSetObjectWrapperFactory(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__PACKAGE:
				return basicSetPackage(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__PLUGIN:
				return basicSetPlugin(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__PLUGINS:
				return basicSetPlugins(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__PROPERTIES:
				return basicSetProperties(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__PROPERTY:
				return basicSetProperty(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__SETTING:
				return basicSetSetting(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__SETTINGS:
				return basicSetSettings(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__TRANSACTION_MANAGER:
				return basicSetTransactionManager(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIAS:
				return basicSetTypeAlias(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIASES:
				return basicSetTypeAliases(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLER:
				return basicSetTypeHandler(null, msgs);
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLERS:
				return basicSetTypeHandlers(null, msgs);
		}
		return super.eInverseRemove(otherEnd, featureID, msgs);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case Configv3Package.DOCUMENT_ROOT__MIXED:
				if (coreType) return getMixed();
				return ((FeatureMap.Internal)getMixed()).getWrapper();
			case Configv3Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
				if (coreType) return getXMLNSPrefixMap();
				else return getXMLNSPrefixMap().map();
			case Configv3Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
				if (coreType) return getXSISchemaLocation();
				else return getXSISchemaLocation().map();
			case Configv3Package.DOCUMENT_ROOT__CONFIGURATION:
				return getConfiguration();
			case Configv3Package.DOCUMENT_ROOT__DATABASE_ID_PROVIDER:
				return getDatabaseIdProvider();
			case Configv3Package.DOCUMENT_ROOT__DATA_SOURCE:
				return getDataSource();
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENT:
				return getEnvironment();
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENTS:
				return getEnvironments();
			case Configv3Package.DOCUMENT_ROOT__MAPPER:
				return getMapper();
			case Configv3Package.DOCUMENT_ROOT__MAPPERS:
				return getMappers();
			case Configv3Package.DOCUMENT_ROOT__OBJECT_FACTORY:
				return getObjectFactory();
			case Configv3Package.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY:
				return getObjectWrapperFactory();
			case Configv3Package.DOCUMENT_ROOT__PACKAGE:
				return getPackage();
			case Configv3Package.DOCUMENT_ROOT__PLUGIN:
				return getPlugin();
			case Configv3Package.DOCUMENT_ROOT__PLUGINS:
				return getPlugins();
			case Configv3Package.DOCUMENT_ROOT__PROPERTIES:
				return getProperties();
			case Configv3Package.DOCUMENT_ROOT__PROPERTY:
				return getProperty();
			case Configv3Package.DOCUMENT_ROOT__SETTING:
				return getSetting();
			case Configv3Package.DOCUMENT_ROOT__SETTINGS:
				return getSettings();
			case Configv3Package.DOCUMENT_ROOT__TRANSACTION_MANAGER:
				return getTransactionManager();
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIAS:
				return getTypeAlias();
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIASES:
				return getTypeAliases();
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLER:
				return getTypeHandler();
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLERS:
				return getTypeHandlers();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case Configv3Package.DOCUMENT_ROOT__MIXED:
				((FeatureMap.Internal)getMixed()).set(newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
				((EStructuralFeature.Setting)getXMLNSPrefixMap()).set(newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
				((EStructuralFeature.Setting)getXSISchemaLocation()).set(newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__CONFIGURATION:
				setConfiguration((ConfigurationType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__DATABASE_ID_PROVIDER:
				setDatabaseIdProvider((DatabaseIdProviderType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__DATA_SOURCE:
				setDataSource((DataSourceType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENT:
				setEnvironment((EnvironmentType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENTS:
				setEnvironments((EnvironmentsType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__MAPPER:
				setMapper((MapperType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__MAPPERS:
				setMappers((MappersType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__OBJECT_FACTORY:
				setObjectFactory((ObjectFactoryType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY:
				setObjectWrapperFactory((ObjectWrapperFactoryType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__PACKAGE:
				setPackage((PackageType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__PLUGIN:
				setPlugin((PluginType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__PLUGINS:
				setPlugins((PluginsType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__PROPERTIES:
				setProperties((PropertiesType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__PROPERTY:
				setProperty((PropertyType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__SETTING:
				setSetting((SettingType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__SETTINGS:
				setSettings((SettingsType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__TRANSACTION_MANAGER:
				setTransactionManager((TransactionManagerType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIAS:
				setTypeAlias((TypeAliasType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIASES:
				setTypeAliases((TypeAliasesType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLER:
				setTypeHandler((TypeHandlerType)newValue);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLERS:
				setTypeHandlers((TypeHandlersType)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case Configv3Package.DOCUMENT_ROOT__MIXED:
				getMixed().clear();
				return;
			case Configv3Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
				getXMLNSPrefixMap().clear();
				return;
			case Configv3Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
				getXSISchemaLocation().clear();
				return;
			case Configv3Package.DOCUMENT_ROOT__CONFIGURATION:
				setConfiguration((ConfigurationType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__DATABASE_ID_PROVIDER:
				setDatabaseIdProvider((DatabaseIdProviderType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__DATA_SOURCE:
				setDataSource((DataSourceType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENT:
				setEnvironment((EnvironmentType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENTS:
				setEnvironments((EnvironmentsType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__MAPPER:
				setMapper((MapperType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__MAPPERS:
				setMappers((MappersType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__OBJECT_FACTORY:
				setObjectFactory((ObjectFactoryType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY:
				setObjectWrapperFactory((ObjectWrapperFactoryType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__PACKAGE:
				setPackage((PackageType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__PLUGIN:
				setPlugin((PluginType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__PLUGINS:
				setPlugins((PluginsType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__PROPERTIES:
				setProperties((PropertiesType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__PROPERTY:
				setProperty((PropertyType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__SETTING:
				setSetting((SettingType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__SETTINGS:
				setSettings((SettingsType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__TRANSACTION_MANAGER:
				setTransactionManager((TransactionManagerType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIAS:
				setTypeAlias((TypeAliasType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIASES:
				setTypeAliases((TypeAliasesType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLER:
				setTypeHandler((TypeHandlerType)null);
				return;
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLERS:
				setTypeHandlers((TypeHandlersType)null);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case Configv3Package.DOCUMENT_ROOT__MIXED:
				return mixed != null && !mixed.isEmpty();
			case Configv3Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
				return xMLNSPrefixMap != null && !xMLNSPrefixMap.isEmpty();
			case Configv3Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
				return xSISchemaLocation != null && !xSISchemaLocation.isEmpty();
			case Configv3Package.DOCUMENT_ROOT__CONFIGURATION:
				return getConfiguration() != null;
			case Configv3Package.DOCUMENT_ROOT__DATABASE_ID_PROVIDER:
				return getDatabaseIdProvider() != null;
			case Configv3Package.DOCUMENT_ROOT__DATA_SOURCE:
				return getDataSource() != null;
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENT:
				return getEnvironment() != null;
			case Configv3Package.DOCUMENT_ROOT__ENVIRONMENTS:
				return getEnvironments() != null;
			case Configv3Package.DOCUMENT_ROOT__MAPPER:
				return getMapper() != null;
			case Configv3Package.DOCUMENT_ROOT__MAPPERS:
				return getMappers() != null;
			case Configv3Package.DOCUMENT_ROOT__OBJECT_FACTORY:
				return getObjectFactory() != null;
			case Configv3Package.DOCUMENT_ROOT__OBJECT_WRAPPER_FACTORY:
				return getObjectWrapperFactory() != null;
			case Configv3Package.DOCUMENT_ROOT__PACKAGE:
				return getPackage() != null;
			case Configv3Package.DOCUMENT_ROOT__PLUGIN:
				return getPlugin() != null;
			case Configv3Package.DOCUMENT_ROOT__PLUGINS:
				return getPlugins() != null;
			case Configv3Package.DOCUMENT_ROOT__PROPERTIES:
				return getProperties() != null;
			case Configv3Package.DOCUMENT_ROOT__PROPERTY:
				return getProperty() != null;
			case Configv3Package.DOCUMENT_ROOT__SETTING:
				return getSetting() != null;
			case Configv3Package.DOCUMENT_ROOT__SETTINGS:
				return getSettings() != null;
			case Configv3Package.DOCUMENT_ROOT__TRANSACTION_MANAGER:
				return getTransactionManager() != null;
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIAS:
				return getTypeAlias() != null;
			case Configv3Package.DOCUMENT_ROOT__TYPE_ALIASES:
				return getTypeAliases() != null;
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLER:
				return getTypeHandler() != null;
			case Configv3Package.DOCUMENT_ROOT__TYPE_HANDLERS:
				return getTypeHandlers() != null;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (mixed: ");
		result.append(mixed);
		result.append(')');
		return result.toString();
	}

} //DocumentRootImpl
